package com.linyaonan.design.singleton;

/**
 * @author: Lin
 * @date: 2020/2/2
 */
public class Singleton6 {

    private Singleton6() {

    }

    private enum Singleton {
        /**
         * 构造方法
         */
        INSTANCE
        ,;
        private final Singleton6 s;

        /**
         * 枚举的构造方法与static类似，只会加载一次，所以s也是单例的
         */
        Singleton() {
            s = new Singleton6();
        }

        public Singleton6 getInstance() {
            // 在调用返回时Singleton才会进行构造，所以也满足懒加载的机制
            return Singleton.INSTANCE.s;
        }
    }

    public static Singleton6 getInstance() {
        return Singleton.INSTANCE.getInstance();
    }

}
